package com.itheima.socket.tcp.demo13;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo01 {

    /**
     * 现在我们的服务端代码还是存在一些问题的 ； 针对每一个客户端我们都去开启一个线程，如果说我们的客户端的请求个数是特别特别多的，针对每个客户端我们都开启了一个
     * 线程，而我们都只线程的开启和销毁需要涉及到和操作系统进行交互，频繁的去开启和销毁线程对系统资源的销毁也是相对比较大的； 并且每一个线程本身也需要占用一定的
     * 系统资源(1m)，如果活动线程数量过多，那么对我们服务器的资源消耗也就越大 ; CPU在多个线程之间进行切换开销也是比较大的。
     */
    public static void main(String[] args) throws IOException {

        // 1. 创建ServerSocket对象
        ServerSocket serverSocket = new ServerSocket(8080) ;

        // 就是让我们的服务端不断的去监听客户端的请求
        while(true) {

            // 2. 监听客户端
            Socket socket = serverSocket.accept();

            // 针对每一个客户端的请求我们都需要去开启一个线程去执行
            new Thread(new ClientHandler(socket)).start();

        }

    }

}
